package com.atguigu.easyexcel;

import com.alibaba.excel.EasyExcel;
import com.atguigu.easyexcel.entity.ExcelStudentData;
import com.atguigu.easyexcel.entity.Subject;
import com.atguigu.easyexcel.listener.SubjectDataListener;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ExcelTest {

    //从Excel文件中解析数据到内存中转为对象集合（将集合保存到数据库中）
    @Test
    public void testRead(){
        //1.为要读取的Excel数据创建java类描述数据
        //2.读取数据：EasyExcel读取数据是读取一行返回一行数据(通过回调 调用指定对象的特定方法 传入读取的数据)
        EasyExcel.read("D:/AtGuiGU/excel/课程分类列表.xls")
                .head(Subject.class) //如何解析表头
                .registerReadListener(new SubjectDataListener())
                .sheet(0)
                .doRead(); //开始读取

    }

    //最简单的写
    @Test
    public void simpleWrite07(){

        String fileName = "D:/AtGuiGU/excel/01-simpleWrite-07.xlsx"; //需要提前新建目录
        //需要指定写用哪个class去写，然后写到第一个sheet，名字为模板，然后文件流会自动关闭
        EasyExcel.write(fileName, ExcelStudentData.class)
                .sheet("模板")
                .doWrite(data());
    }

    private List<ExcelStudentData> data(){
       List<ExcelStudentData> list = new ArrayList<ExcelStudentData>();

        //算上标题，做多可写65536行
        //超出：java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)
        for (int i = 0; i < 65535; i++) {
            ExcelStudentData data = new ExcelStudentData();
            data.setName("tom"+i);
            data.setBirthday(new Date());
            data.setSalary(123456.123);
            list.add(data);
        }

       return list;
    }
}
